#ifndef DTF_H_
#define DTF_H_

#include "../../SAMA_Function.h"


typedef struct {
	float Init_Value;			//< 初始值
	float K;					//< 比例系数
	float T;					//< 采样时间
	int n;						//< 分母阶数
	int m;						//< 分子阶数
	float b[20];				//< 分子序列 b0、b1、b2.......bn
	float a[20];				//< 分母序列 a0、a1、a2.......an

}DTF_Par_t;



typedef struct {
	float dTime;
	float RunTime_Sum;
	float last_y[20];
	float last_u[20];
}DTF_Sta_t;



struct DTF_T
{
	Model_Base_t Base;	//< 模块基本参数结构体
	DTF_Par_t Par;		//< 模块可调参数结构体
	DTF_Sta_t Sta;		//< 模块运算中间参数结构体
};


extern DTF_T* DTF_t;


bool CALCU_SAMA(DTF)(Model_Base_t* arg, float dt, bool* DI, bool* DO, float* AI, float* AO);	//< SAMA运算函数
int BC_PARA(DTF)(Model_Base_t* arg, void** Data);											//< 广播SAMA参数变量函数（无参数需要广播的模块直接将BCPara函数设置为NULL即可）
int BAK_STA(DTF)(Model_Base_t* arg, void** Data);											//< 备份SAMA运算中间参数
int ANA_STA(DTF)(Model_Base_t* arg, void** Data);											//< 解析备份的SAMA运算中间参数
int CHANGE_PAR(DTF)(Model_Base_t* arg, void** Data);											//< 在线修改模块参数函数
void INIT_STAPAR(DTF)(Model_Base_t* arg);													//< 初始化模块运算中间参数


#endif
